<html>
<head>
<title>08 函数</title>
</head>
<body>
	<script type="text/javascript">
		/*
		* 函数
			- 函数也是一个对象  document / console
			- 函数中可以封装一些功能(代码)，在需要时可以执行这些功能（代码）
			- 函数中可以保存一些代码在需要时调用
		
		*/

		//可以将要封装的代码以字符串的形式传递给构造函数
		var fun = new Function("console.log('Hello JavaScript')");
		console.log(fun,typeof fun);

		//封装到函数中的代码不会立即执行
		//函数中的代码会在函数调用的时候执行
		//调用函数的语法： 函数对象()
		//当调用函数时，函数中封装的代码会按照顺序执行

		fun();

		/*
		* 使用函数声明来创建一个函数
			- 语法 
				function 函数名([形参1,形参2,形参3,形参n])
		*/

		function fun2(){
			console.log("fun2");
		}
		
		fun2();

		/*
		* 使用 函数表达式来创建一个函数
		* var  函数名 = function([形参1,形参2,形参3,形参n]){
	
		}
		*/

		var fun3 = function(){
			console.log('我是匿名函数中封装的代码');
		}

		fun3();

		//实参是一个对象
		var fun4 = function(o){
			console.log("姓名: "+o.name + " 年龄: " + o.age );
		}

		var obj3 = {
			name:"孙悟空",
			age: "500",
			gender:'M' 
		}


		var mianji = function(o){
			console.log(o*10*10 );
		}

		fun4(obj3);

		//实参是一个函数
		function fun5(a){
			console.log('---  函数 ：  a = '+ a);
			//a(obj3);
		}
		//函数对象
		//相当于直接使用函数对象
		fun5(fun4);
		//调用函数
		//相当于使用的函数的返回值
		fun5(mianji(2));
		fun5(function(){console.log("hello")});


	</script>
</body>


</html>